home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QD3DGroup.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  15.4 KB  |  495 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QD3DGroup.p
  3.  
  4.      Contains:    Q3Group methods        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QD3DGroup;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QD3DGROUP__}
  27. {$SETC __QD3DGROUP__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QD3DGroupIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __QD3D__}
  34. {$I QD3D.p}
  35. {$ENDC}
  36.  
  37.  
  38. {$PUSH}
  39. {$ALIGN POWER}
  40. {$LibExport+}
  41.  
  42. {*****************************************************************************
  43.  **                                                                             **
  44.  **                            Group Typedefs                                     **
  45.  **                                                                             **
  46.  ****************************************************************************}
  47. {
  48.  * These flags affect how a group is traversed
  49.  * They apply to when a group is "drawn", "picked", "bounded", "written"
  50.  }
  51.  
  52. TYPE
  53.     TQ3DisplayGroupStateMasks     = LONGINT;
  54. CONST
  55.     kQ3DisplayGroupStateNone    = {TQ3DisplayGroupStateMasks}0;
  56.     kQ3DisplayGroupStateMaskIsDrawn = {TQ3DisplayGroupStateMasks}$01;
  57.     kQ3DisplayGroupStateMaskIsInline = {TQ3DisplayGroupStateMasks}$02;
  58.     kQ3DisplayGroupStateMaskUseBoundingBox = {TQ3DisplayGroupStateMasks}$04;
  59.     kQ3DisplayGroupStateMaskUseBoundingSphere = {TQ3DisplayGroupStateMasks}$08;
  60.     kQ3DisplayGroupStateMaskIsPicked = {TQ3DisplayGroupStateMasks}$10;
  61.     kQ3DisplayGroupStateMaskIsWritten = {TQ3DisplayGroupStateMasks}$20;
  62.  
  63.  
  64. TYPE
  65.     TQ3DisplayGroupState                = UInt32;
  66. {*****************************************************************************
  67.  **                                                                             **
  68.  **                    Group Routines (apply to all groups)                     **
  69.  **                                                                             **
  70.  ****************************************************************************}
  71. FUNCTION Q3Group_New: TQ3GroupObject; C;
  72. FUNCTION Q3Group_GetType(group: TQ3GroupObject): TQ3ObjectType; C;
  73. FUNCTION Q3Group_AddObject(group: TQ3GroupObject; object: TQ3Object): TQ3GroupPosition; C;
  74. FUNCTION Q3Group_AddObjectBefore(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  75. FUNCTION Q3Group_AddObjectAfter(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  76. FUNCTION Q3Group_GetPositionObject(group: TQ3GroupObject; position: TQ3GroupPosition; VAR object: TQ3Object): TQ3Status; C;
  77. FUNCTION Q3Group_SetPositionObject(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3Status; C;
  78. FUNCTION Q3Group_RemovePosition(group: TQ3GroupObject; position: TQ3GroupPosition): TQ3Object; C;
  79. FUNCTION Q3Group_GetFirstPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  80. FUNCTION Q3Group_GetLastPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  81. FUNCTION Q3Group_GetNextPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  82. FUNCTION Q3Group_GetPreviousPosition(group: TQ3GroupObject; VAR position: TQ3GroupPosition): TQ3Status; C;
  83. FUNCTION Q3Group_CountObjects(group: TQ3GroupObject; VAR nObjects: UInt32): TQ3Status; C;
  84. FUNCTION Q3Group_EmptyObjects(group: TQ3GroupObject): TQ3Status; C;
  85. {
  86.  *     Typed Access
  87.  }
  88. FUNCTION Q3Group_GetFirstPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  89. FUNCTION Q3Group_GetLastPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  90. FUNCTION Q3Group_GetNextPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  91. FUNCTION Q3Group_GetPreviousPositionOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR position: TQ3GroupPosition): TQ3Status; C;
  92. FUNCTION Q3Group_CountObjectsOfType(group: TQ3GroupObject; isType: TQ3ObjectType; VAR nObjects: UInt32): TQ3Status; C;
  93. FUNCTION Q3Group_EmptyObjectsOfType(group: TQ3GroupObject; isType: TQ3ObjectType): TQ3Status; C;
  94. {
  95.  *    Determine position of objects in a group
  96.  }
  97. FUNCTION Q3Group_GetFirstObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  98. FUNCTION Q3Group_GetLastObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  99. FUNCTION Q3Group_GetNextObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  100. FUNCTION Q3Group_GetPreviousObjectPosition(group: TQ3GroupObject; object: TQ3Object; VAR position: TQ3GroupPosition): TQ3Status; C;
  101.  
  102. {*****************************************************************************
  103.  **                                                                             **
  104.  **                            Group Subclasses                                 **
  105.  **                                                                             **
  106.  ****************************************************************************}
  107. FUNCTION Q3LightGroup_New: TQ3GroupObject; C;
  108. FUNCTION Q3InfoGroup_New: TQ3GroupObject; C;
  109. {*****************************************************************************
  110.  **                                                                             **
  111.  **                        Display Group Routines                                 **
  112.  **                                                                             **
  113.  ****************************************************************************}
  114. FUNCTION Q3DisplayGroup_New: TQ3GroupObject; C;
  115. FUNCTION Q3DisplayGroup_GetType(group: TQ3GroupObject): TQ3ObjectType; C;
  116. FUNCTION Q3DisplayGroup_GetState(group: TQ3GroupObject; VAR state: TQ3DisplayGroupState): TQ3Status; C;
  117. FUNCTION Q3DisplayGroup_SetState(group: TQ3GroupObject; state: TQ3DisplayGroupState): TQ3Status; C;
  118. FUNCTION Q3DisplayGroup_Submit(group: TQ3GroupObject; view: TQ3ViewObject): TQ3Status; C;
  119. {*****************************************************************************
  120.  **                                                                             **
  121.  **        Ordered Display Group                                                  **
  122.  **                                                                             **
  123.  **        Ordered display groups keep objects in order by the type of object:     **
  124.  **                                                                             **
  125.  **        1    kQ3ShapeTypeTransform                                             **
  126.  **        2    kQ3ShapeTypeStyle                                                  **
  127.  **        3    kQ3SetTypeAttribute                                                  **
  128.  **        4    kQ3ShapeTypeShader                                                  **
  129.  **        5    kQ3ShapeTypeCamera                                                  **
  130.  **        6    kQ3ShapeTypeLight                                                  **
  131.  **        7    kQ3ShapeTypeGeometry                                             **
  132.  **        8    kQ3ShapeTypeGroup                                                 **            
  133.  **        9    kQ3ShapeTypeUnknown                                                 **
  134.  **                                                                             **
  135.  **        Within a type, you are responsible for keeping things in order.         **
  136.  **                                                                             **
  137.  **        You may access and/or manipulate the group using the above types      **
  138.  **        (fast), or you may use any parent or leaf class types (slower).         **
  139.  **                                                                             **
  140.  **        Additional types will be added as functionality grows.                 **
  141.  **                                                                             **
  142.  **        The group calls which access by type are much faster for ordered     ** 
  143.  **        display group for the types above.                                     **
  144.  **                                                                             **
  145.  **        N.B. In QuickDraw 3D 1.0 Lights and Cameras are a no-op when drawn.     **
  146.  **                                                                             **
  147.  ****************************************************************************}
  148. FUNCTION Q3OrderedDisplayGroup_New: TQ3GroupObject; C;
  149. {*****************************************************************************
  150.  **                                                                             **
  151.  **        IO Proxy Display Group                                                  **
  152.  **                                                                             **
  153.  **        IO Proxy display groups are used to place more than one              **
  154.  **        representation of an object in a metafile. For example, if you know     **
  155.  **        another program does not understand NURBPatches but does understand  **
  156.  **        Meshes, you may place a mesh and a NURB Patch in an IO Proxy Group,  **
  157.  **        and the reading program will select the desired representation.         **
  158.  **                                                                             **
  159.  **        Objects in an IO Proxy Display Group are placed in their preferencial**
  160.  **        order, with the FIRST object being the MOST preferred, the LAST      **
  161.  **        object the least preferred.                                             **
  162.  **                                                                             **
  163.  **        The behavior of an IO Proxy Display Group is that when drawn/picked/ **
  164.  **        bounded, the first object in the group that is not "Unknown" is used,**
  165.  **        and the other objects ignored.                                         **
  166.  **                                                                             **
  167.  ****************************************************************************}
  168. FUNCTION Q3IOProxyDisplayGroup_New: TQ3GroupObject; C;
  169. {*****************************************************************************
  170.  **                                                                             **
  171.  **                        Group Extension Definitions                             **
  172.  **                                                                             **
  173.  ****************************************************************************}
  174. {
  175.  *    Searching methods - OPTIONAL
  176.  }
  177.  
  178. CONST
  179.     kQ3XMethodType_GroupAcceptObject = 'gaco';
  180.  
  181.  
  182. TYPE
  183. {$IFC TYPED_FUNCTION_POINTERS}
  184.     TQ3XGroupAcceptObjectMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object): TQ3Boolean; C;
  185. {$ELSEC}
  186.     TQ3XGroupAcceptObjectMethod = ProcPtr;
  187. {$ENDC}
  188.  
  189.  
  190. CONST
  191.     kQ3XMethodType_GroupAddObject = 'gado';
  192.  
  193.  
  194. TYPE
  195. {$IFC TYPED_FUNCTION_POINTERS}
  196.     TQ3XGroupAddObjectMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object): TQ3GroupPosition; C;
  197. {$ELSEC}
  198.     TQ3XGroupAddObjectMethod = ProcPtr;
  199. {$ENDC}
  200.  
  201.  
  202. CONST
  203.     kQ3XMethodType_GroupAddObjectBefore = 'gaob';
  204.  
  205.  
  206. TYPE
  207. {$IFC TYPED_FUNCTION_POINTERS}
  208.     TQ3XGroupAddObjectBeforeMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  209. {$ELSEC}
  210.     TQ3XGroupAddObjectBeforeMethod = ProcPtr;
  211. {$ENDC}
  212.  
  213.  
  214. CONST
  215.     kQ3XMethodType_GroupAddObjectAfter = 'gaoa';
  216.  
  217.  
  218. TYPE
  219. {$IFC TYPED_FUNCTION_POINTERS}
  220.     TQ3XGroupAddObjectAfterMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition; object: TQ3Object): TQ3GroupPosition; C;
  221. {$ELSEC}
  222.     TQ3XGroupAddObjectAfterMethod = ProcPtr;
  223. {$ENDC}
  224.  
  225.  
  226. CONST
  227.     kQ3XMethodType_GroupSetPositionObject = 'gspo';
  228.  
  229.  
  230. TYPE
  231. {$IFC TYPED_FUNCTION_POINTERS}
  232.     TQ3XGroupSetPositionObjectMethod = FUNCTION(group: TQ3GroupObject; gPos: TQ3GroupPosition; obj: TQ3Object): TQ3Status; C;
  233. {$ELSEC}
  234.     TQ3XGroupSetPositionObjectMethod = ProcPtr;
  235. {$ENDC}
  236.  
  237.  
  238. CONST
  239.     kQ3XMethodType_GroupRemovePosition = 'grmp';
  240.  
  241.  
  242. TYPE
  243. {$IFC TYPED_FUNCTION_POINTERS}
  244.     TQ3XGroupRemovePositionMethod = FUNCTION(group: TQ3GroupObject; position: TQ3GroupPosition): TQ3Object; C;
  245. {$ELSEC}
  246.     TQ3XGroupRemovePositionMethod = ProcPtr;
  247. {$ENDC}
  248.  
  249. {
  250.  *    Searching methods - OPTIONAL - default uses above methods
  251.  }
  252.  
  253. CONST
  254.     kQ3XMethodType_GroupGetFirstPositionOfType = 'gfrt';
  255.  
  256.  
  257. TYPE
  258. {$IFC TYPED_FUNCTION_POINTERS}
  259.     TQ3XGroupGetFirstPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  260. {$ELSEC}
  261.     TQ3XGroupGetFirstPositionOfTypeMethod = ProcPtr;
  262. {$ENDC}
  263.  
  264.  
  265. CONST
  266.     kQ3XMethodType_GroupGetLastPositionOfType = 'glst';
  267.  
  268.  
  269. TYPE
  270. {$IFC TYPED_FUNCTION_POINTERS}
  271.     TQ3XGroupGetLastPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  272. {$ELSEC}
  273.     TQ3XGroupGetLastPositionOfTypeMethod = ProcPtr;
  274. {$ENDC}
  275.  
  276.  
  277. CONST
  278.     kQ3XMethodType_GroupGetNextPositionOfType = 'gnxt';
  279.  
  280.  
  281. TYPE
  282. {$IFC TYPED_FUNCTION_POINTERS}
  283.     TQ3XGroupGetNextPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  284. {$ELSEC}
  285.     TQ3XGroupGetNextPositionOfTypeMethod = ProcPtr;
  286. {$ENDC}
  287.  
  288.  
  289. CONST
  290.     kQ3XMethodType_GroupGetPrevPositionOfType = 'gpvt';
  291.  
  292.  
  293. TYPE
  294. {$IFC TYPED_FUNCTION_POINTERS}
  295.     TQ3XGroupGetPrevPositionOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  296. {$ELSEC}
  297.     TQ3XGroupGetPrevPositionOfTypeMethod = ProcPtr;
  298. {$ENDC}
  299.  
  300.  
  301. CONST
  302.     kQ3XMethodType_GroupCountObjectsOfType = 'gcnt';
  303.  
  304.  
  305. TYPE
  306. {$IFC TYPED_FUNCTION_POINTERS}
  307.     TQ3XGroupCountObjectsOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType; VAR nObjects: UInt32): TQ3Status; C;
  308. {$ELSEC}
  309.     TQ3XGroupCountObjectsOfTypeMethod = ProcPtr;
  310. {$ENDC}
  311.  
  312.  
  313. CONST
  314.     kQ3XMethodType_GroupEmptyObjectsOfType = 'geot';
  315.  
  316.  
  317. TYPE
  318. {$IFC TYPED_FUNCTION_POINTERS}
  319.     TQ3XGroupEmptyObjectsOfTypeMethod = FUNCTION(group: TQ3GroupObject; isType: TQ3ObjectType): TQ3Status; C;
  320. {$ELSEC}
  321.     TQ3XGroupEmptyObjectsOfTypeMethod = ProcPtr;
  322. {$ENDC}
  323.  
  324.  
  325. CONST
  326.     kQ3XMethodType_GroupGetFirstObjectPosition = 'gfop';
  327.  
  328.  
  329. TYPE
  330. {$IFC TYPED_FUNCTION_POINTERS}
  331.     TQ3XGroupGetFirstObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  332. {$ELSEC}
  333.     TQ3XGroupGetFirstObjectPositionMethod = ProcPtr;
  334. {$ENDC}
  335.  
  336.  
  337. CONST
  338.     kQ3XMethodType_GroupGetLastObjectPosition = 'glop';
  339.  
  340.  
  341. TYPE
  342. {$IFC TYPED_FUNCTION_POINTERS}
  343.     TQ3XGroupGetLastObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  344. {$ELSEC}
  345.     TQ3XGroupGetLastObjectPositionMethod = ProcPtr;
  346. {$ENDC}
  347.  
  348.  
  349. CONST
  350.     kQ3XMethodType_GroupGetNextObjectPosition = 'gnop';
  351.  
  352.  
  353. TYPE
  354. {$IFC TYPED_FUNCTION_POINTERS}
  355.     TQ3XGroupGetNextObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  356. {$ELSEC}
  357.     TQ3XGroupGetNextObjectPositionMethod = ProcPtr;
  358. {$ENDC}
  359.  
  360.  
  361. CONST
  362.     kQ3XMethodType_GroupGetPrevObjectPosition = 'gpop';
  363.  
  364.  
  365. TYPE
  366. {$IFC TYPED_FUNCTION_POINTERS}
  367.     TQ3XGroupGetPrevObjectPositionMethod = FUNCTION(group: TQ3GroupObject; object: TQ3Object; VAR gPos: TQ3GroupPosition): TQ3Status; C;
  368. {$ELSEC}
  369.     TQ3XGroupGetPrevObjectPositionMethod = ProcPtr;
  370. {$ENDC}
  371.  
  372. {
  373.  *    Group Position Methods
  374.  *    
  375.  }
  376.  
  377. CONST
  378.     kQ3XMethodType_GroupPositionSize = 'ggpz';
  379.  
  380.  
  381. TYPE
  382.     TQ3XMethodTypeGroupPositionSize        = UInt32;
  383.  
  384. CONST
  385.     kQ3XMethodType_GroupPositionNew = 'ggpn';
  386.  
  387.  
  388. TYPE
  389. {$IFC TYPED_FUNCTION_POINTERS}
  390.     TQ3XGroupPositionNewMethod = FUNCTION(gPos: UNIV Ptr; object: TQ3Object; initData: UNIV Ptr): TQ3Status; C;
  391. {$ELSEC}
  392.     TQ3XGroupPositionNewMethod = ProcPtr;
  393. {$ENDC}
  394.  
  395.  
  396. CONST
  397.     kQ3XMethodType_GroupPositionCopy = 'ggpc';
  398.  
  399.  
  400. TYPE
  401. {$IFC TYPED_FUNCTION_POINTERS}
  402.     TQ3XGroupPositionCopyMethod = FUNCTION(srcGPos: UNIV Ptr; dstGPos: UNIV Ptr): TQ3Status; C;
  403. {$ELSEC}
  404.     TQ3XGroupPositionCopyMethod = ProcPtr;
  405. {$ENDC}
  406.  
  407.  
  408. CONST
  409.     kQ3XMethodType_GroupPositionDelete = 'ggpd';
  410.  
  411.  
  412. TYPE
  413. {$IFC TYPED_FUNCTION_POINTERS}
  414.     TQ3XGroupPositionDeleteMethod = PROCEDURE(gPos: UNIV Ptr); C;
  415. {$ELSEC}
  416.     TQ3XGroupPositionDeleteMethod = ProcPtr;
  417. {$ENDC}
  418.  
  419. {
  420.  *    View Drawing Helpers
  421.  *    
  422.  *    TQ3XGroupStartIterateMethod
  423.  *
  424.  *        Pass back *object = NULL to NOT call EndIterate iterate
  425.  *        Pass back *object != NULL to draw object
  426.  *         (other side will pass it to EndIterate for deletion!)
  427.  *
  428.  *        *iterator is uninitialized, use for iteration state. Caller should 
  429.  *         ignore it.
  430.  *    
  431.  *    TQ3XGroupEndIterateMethod
  432.  *    
  433.  *        *object is previous object, dispose it or play with it.
  434.  *        Pass back NULL when last iteration has occurred
  435.  *        *iterator is previous value, use for iteration state Caller should 
  436.  *        ignore it.
  437.  }
  438.  
  439. CONST
  440.     kQ3XMethodType_GroupStartIterate = 'gstd';
  441.  
  442.  
  443. TYPE
  444. {$IFC TYPED_FUNCTION_POINTERS}
  445.     TQ3XGroupStartIterateMethod = FUNCTION(group: TQ3GroupObject; VAR iterator: TQ3GroupPosition; VAR object: TQ3Object; view: TQ3ViewObject): TQ3Status; C;
  446. {$ELSEC}
  447.     TQ3XGroupStartIterateMethod = ProcPtr;
  448. {$ENDC}
  449.  
  450.  
  451. CONST
  452.     kQ3XMethodType_GroupEndIterate = 'gitd';
  453.  
  454.  
  455. TYPE
  456. {$IFC TYPED_FUNCTION_POINTERS}
  457.     TQ3XGroupEndIterateMethod = FUNCTION(group: TQ3GroupObject; VAR iterator: TQ3GroupPosition; VAR object: TQ3Object; view: TQ3ViewObject): TQ3Status; C;
  458. {$ELSEC}
  459.     TQ3XGroupEndIterateMethod = ProcPtr;
  460. {$ENDC}
  461.  
  462. {
  463.  *    IO  Helpers
  464.  *    
  465.  *    TQ3XGroupEndReadMethod
  466.  *        Called when a group has been completely read. Group should perform
  467.  *        validation and clean up any reading caches.
  468.  }
  469.  
  470. CONST
  471.     kQ3XMethodType_GroupEndRead    = 'gerd';
  472.  
  473.  
  474. TYPE
  475. {$IFC TYPED_FUNCTION_POINTERS}
  476.     TQ3XGroupEndReadMethod = FUNCTION(group: TQ3GroupObject): TQ3Status; C;
  477. {$ELSEC}
  478.     TQ3XGroupEndReadMethod = ProcPtr;
  479. {$ENDC}
  480.  
  481. FUNCTION Q3XGroup_GetPositionPrivate(group: TQ3GroupObject; position: TQ3GroupPosition): Ptr; C;
  482.  
  483.  
  484.  
  485. {$ALIGN RESET}
  486. {$POP}
  487.  
  488. {$SETC UsingIncludes := QD3DGroupIncludes}
  489.  
  490. {$ENDC} {__QD3DGROUP__}
  491.  
  492. {$IFC NOT UsingIncludes}
  493.  END.
  494. {$ENDC}
  495.